diff --git a/Makefile b/Makefile
index 2f93b87..41d5e9a 100644
--- a/Makefile
+++ b/Makefile
@@ -6,6 +6,7 @@ include config.mk
 
 REQ = util
 COM =\
+	components/alsa_master_vol\
 	components/battery\
 	components/cpu\
 	components/datetime\
diff --git a/components/alsa_master_vol.c b/components/alsa_master_vol.c
new file mode 100644
index 0000000..acc283b
--- /dev/null
+++ b/components/alsa_master_vol.c
@@ -0,0 +1,64 @@
+/* Created by William Rabbermann */
+#include <stdio.h>
+#include <stdbool.h>
+#include <string.h>
+#include "../util.h"
+
+#define TMP_BUF_SIZE 14
+#define VOL_BUF_SIZE 5
+
+const char *
+alsa_master_vol(void)
+{
+	bool MASTER_IS_MUTED = true;
+	char tmp_buf[TMP_BUF_SIZE];
+	short b;
+	unsigned short i = 0;
+	
+	FILE *fp = popen("amixer get Master | tail -c13", "r");
+	char ch;
+	while ((ch = fgetc(fp)) != EOF && i < TMP_BUF_SIZE)
+		tmp_buf[i++] = ch;
+	tmp_buf[i] = '\0';
+	pclose(fp);
+
+	b = i - 1;
+	while (b >= 0)
+	{
+		if ('[' == tmp_buf[b])
+		{
+			if (tmp_buf[b+1] == 'o' && tmp_buf[b+2] == 'n')
+				MASTER_IS_MUTED = false;
+			b -= 3;
+			break;
+		}
+		b--;
+	}
+	
+	if (MASTER_IS_MUTED) return bprintf("MUTE");
+	else
+	{
+		char vol_buf[VOL_BUF_SIZE];
+		while (b >= 0)
+		{
+			if ('[' == tmp_buf[b])
+				break;	
+			b--;
+		}
+		
+		i = 0;
+		while (i < VOL_BUF_SIZE)
+		{
+			b++;
+			if (']' == tmp_buf[b])
+			{
+				vol_buf[i] = '\0'; 
+				break;
+			}
+			else
+				vol_buf[i++] = tmp_buf[b];
+		}
+		
+		return bprintf("%s", vol_buf);
+	}
+}
diff --git a/config.def.h b/config.def.h
index 93a875a..6074441 100644
--- a/config.def.h
+++ b/config.def.h
@@ -58,6 +58,7 @@ static const char unknown_str[] = "n/a";
  * uid                 UID of current user             NULL
  * uptime              system uptime                   NULL
  * username            username of current user        NULL
+ * alsa_master_vol     ALSA Master device volume       NULL
  * vol_perc            OSS/ALSA volume in percent      mixer file (/dev/mixer)
  *                                                     NULL on OpenBSD
  * wifi_perc           WiFi signal in percent          interface name (wlan0)
diff --git a/slstatus.h b/slstatus.h
index b0f2564..415afc1 100644
--- a/slstatus.h
+++ b/slstatus.h
@@ -78,6 +78,7 @@ const char *uid(void);
 
 /* volume */
 const char *vol_perc(const char *card);
+const char *alsa_master_vol(void);
 
 /* wifi */
 const char *wifi_perc(const char *interface);
